[INFO] fetching crate hitbox-fn 0.2.1...
[INFO] fixing hitbox-fn-0.2.1 against try#622891a4e29178280638a6b63a8908bde2c0c854+cargoflags=-Zfix-edition=start=2015 for pr-157817-2
[INFO] extracting crate hitbox-fn 0.2.1 into /workspace/builds/worker-0-tc1/source
[INFO] started tweaking crates.io crate hitbox-fn 0.2.1
[INFO] removed 0 missing tests
[INFO] finished tweaking crates.io crate hitbox-fn 0.2.1
[INFO] tweaked toml for crates.io crate hitbox-fn 0.2.1 written to /workspace/builds/worker-0-tc1/source/Cargo.toml
[INFO] validating manifest of crates.io crate hitbox-fn 0.2.1 on toolchain 622891a4e29178280638a6b63a8908bde2c0c854
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+622891a4e29178280638a6b63a8908bde2c0c854" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }`
[INFO] crate crates.io crate hitbox-fn 0.2.1 already has a lockfile, it will not be regenerated
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+622891a4e29178280638a6b63a8908bde2c0c854" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] [stderr]     Updating crates.io index
[INFO] [stderr]  Downloading crates ...
[INFO] [stderr]   Downloaded hitbox-derive v0.2.1
[INFO] [stderr]   Downloaded trybuild v1.0.115
[INFO] [stderr]   Downloaded rkyv_derive v0.8.14
[INFO] [stderr]   Downloaded hitbox-core v0.2.2
[INFO] [stderr]   Downloaded smallbox v0.8.8
[INFO] [stderr]   Downloaded bitcode_derive v0.6.9
[INFO] [stderr]   Downloaded bitcode v0.6.9
[INFO] [stderr]   Downloaded garde_derive v0.22.1
[INFO] [stderr]   Downloaded hitbox v0.2.4
[INFO] [stderr]   Downloaded garde v0.22.1
[INFO] [stderr]   Downloaded rkyv v0.8.14
[INFO] [stderr]   Downloaded bounded-integer-macro v0.6.0
[INFO] [stderr]   Downloaded hitbox-backend v0.2.1
[INFO] [stderr]   Downloaded saphyr-parser-bw v0.0.607
[INFO] [stderr]   Downloaded bounded-integer v0.6.1
[INFO] [stderr]   Downloaded serde-saphyr v0.0.17
[INFO] [stderr]   Downloaded glam v0.31.0
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-0-tc1/source:/opt/rustwide/workdir:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-0-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-m" "1610612736" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:3a6becf2bc8dde7f3fa57ede90e4f284e72d296796fc446bbb1e2c7cc0530151" "sleep" "infinity", kill_on_drop: false }`
[INFO] [stdout] dc3aa0b7c261fbec207db92b765402c9484935aeae916c173d23eb430fc4a1ac
[INFO] running `Command { std: "docker" "start" "dc3aa0b7c261fbec207db92b765402c9484935aeae916c173d23eb430fc4a1ac", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "exec" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-w" "/opt/rustwide/workdir" "--user" "0:0" "dc3aa0b7c261fbec207db92b765402c9484935aeae916c173d23eb430fc4a1ac" "/opt/rustwide/cargo-home/bin/cargo" "+622891a4e29178280638a6b63a8908bde2c0c854" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "dc3aa0b7c261fbec207db92b765402c9484935aeae916c173d23eb430fc4a1ac", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "exec" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=" "-e" "RUSTDOCFLAGS=" "-w" "/opt/rustwide/workdir" "--user" "0:0" "dc3aa0b7c261fbec207db92b765402c9484935aeae916c173d23eb430fc4a1ac" "/opt/rustwide/cargo-home/bin/cargo" "+622891a4e29178280638a6b63a8908bde2c0c854" "fix" "--allow-no-vcs" "--allow-dirty" "--frozen" "--all" "--all-targets" "--message-format=json" "-Zfix-edition=start=2015", kill_on_drop: false }`
[INFO] [stderr]    Compiling unicode-ident v1.0.23
[INFO] [stderr]    Compiling libc v0.2.181
[INFO] [stderr]    Compiling zmij v1.0.20
[INFO] [stderr]    Compiling serde_json v1.0.149
[INFO] [stderr]     Checking percent-encoding v2.3.2
[INFO] [stderr]    Compiling rustix v1.1.3
[INFO] [stderr]     Checking bitflags v2.10.0
[INFO] [stderr]    Compiling uncased v0.9.10
[INFO] [stderr]    Compiling owo-colors v4.2.3
[INFO] [stderr]    Compiling zerocopy v0.8.39
[INFO] [stderr]     Checking regex-syntax v0.8.9
[INFO] [stderr]    Compiling figment v0.10.19
[INFO] [stderr]     Checking is_ci v1.2.0
[INFO] [stderr]     Checking futures-core v0.3.31
[INFO] [stderr]    Compiling smallbox v0.8.8
[INFO] [stderr]     Checking futures-sink v0.3.31
[INFO] [stderr]    Compiling proc-macro2 v1.0.106
[INFO] [stderr]     Checking supports-color v3.0.2
[INFO] [stderr]     Checking form_urlencoded v1.2.2
[INFO] [stderr]     Checking compact_str v0.8.1
[INFO] [stderr]     Checking textwrap v0.16.2
[INFO] [stderr]     Checking futures-task v0.3.31
[INFO] [stderr]     Checking arraydeque v0.5.1
[INFO] [stderr]     Checking supports-unicode v3.0.0
[INFO] [stderr]    Compiling virtue v0.0.18
[INFO] [stderr]     Checking supports-hyperlinks v3.2.0
[INFO] [stderr]    Compiling erased-serde v0.4.9
[INFO] [stderr]     Checking annotate-snippets v0.12.11
[INFO] [stderr]     Checking encoding_rs_io v0.1.7
[INFO] [stderr]     Checking futures-channel v0.3.31
[INFO] [stderr]     Checking smol_str v0.3.5
[INFO] [stderr]     Checking tracing-core v0.1.36
[INFO] [stderr]    Compiling quote v1.0.44
[INFO] [stderr]     Checking futures-io v0.3.31
[INFO] [stderr]     Checking winnow v0.7.14
[INFO] [stderr]     Checking toml_datetime v0.7.5+spec-1.1.0
[INFO] [stderr]     Checking serde_spanned v1.0.4
[INFO] [stderr]     Checking toml_writer v1.0.6+spec-1.1.0
[INFO] [stderr]    Compiling syn v2.0.114
[INFO] [stderr]    Compiling proc-macro-error-attr2 v2.0.0
[INFO] [stderr]    Compiling bounded-integer-macro v0.6.0
[INFO] [stderr]    Compiling bincode_derive v2.0.1
[INFO] [stderr]     Checking terminal_size v0.4.3
[INFO] [stderr]     Checking backtrace v0.3.76
[INFO] [stderr]     Checking getrandom v0.3.4
[INFO] [stderr]     Checking parking_lot_core v0.9.12
[INFO] [stderr]     Checking dashmap v6.1.0
[INFO] [stderr]     Checking regex-automata v0.4.14
[INFO] [stderr]     Checking toml_parser v1.0.6+spec-1.1.0
[INFO] [stderr]     Checking backtrace-ext v0.2.1
[INFO] [stderr]     Checking toml v0.9.11+spec-1.1.0
[INFO] [stderr]     Checking regex v1.12.3
[INFO] [stderr]     Checking ahash v0.8.12
[INFO] [stderr]    Compiling synstructure v0.13.2
[INFO] [stderr]    Compiling darling_core v0.20.11
[INFO] [stderr]    Compiling proc-macro-error2 v2.0.1
[INFO] [stderr]    Compiling zerofrom-derive v0.1.6
[INFO] [stderr]    Compiling yoke-derive v0.8.1
[INFO] [stderr]    Compiling serde_derive v1.0.228
[INFO] [stderr]    Compiling zerovec-derive v0.11.2
[INFO] [stderr]    Compiling displaydoc v0.2.5
[INFO] [stderr]    Compiling bytemuck_derive v1.10.2
[INFO] [stderr]    Compiling thiserror-impl v2.0.18
[INFO] [stderr]    Compiling pin-project-internal v1.1.10
[INFO] [stderr]    Compiling garde_derive v0.22.1
[INFO] [stderr]    Compiling futures-macro v0.3.31
[INFO] [stderr]    Compiling bitcode_derive v0.6.9
[INFO] [stderr]    Compiling miette-derive v7.6.0
[INFO] [stderr]    Compiling tracing-attributes v0.1.31
[INFO] [stderr]    Compiling async-trait v0.1.89
[INFO] [stderr]    Compiling tokio-macros v2.6.0
[INFO] [stderr]     Checking tokio v1.49.0
[INFO] [stderr]     Checking bytemuck v1.25.0
[INFO] [stderr]     Checking futures-util v0.3.31
[INFO] [stderr]     Checking garde v0.22.1
[INFO] [stderr]     Checking miette v7.6.0
[INFO] [stderr]     Checking zerofrom v0.1.6
[INFO] [stderr]     Checking tracing v0.1.44
[INFO] [stderr]     Checking pin-project v1.1.10
[INFO] [stderr]     Checking thiserror v2.0.18
[INFO] [stderr]     Checking saphyr-parser-bw v0.0.607
[INFO] [stderr]     Checking yoke v0.8.1
[INFO] [stderr]    Compiling darling_macro v0.20.11
[INFO] [stderr]     Checking zerovec v0.11.5
[INFO] [stderr]     Checking zerotrie v0.2.3
[INFO] [stderr]    Compiling darling v0.20.11
[INFO] [stderr]    Compiling validator_derive v0.20.0
[INFO] [stderr]     Checking serde v1.0.228
[INFO] [stderr]     Checking tinystr v0.8.2
[INFO] [stderr]     Checking potential_utf v0.1.4
[INFO] [stderr]     Checking icu_collections v2.1.1
[INFO] [stderr]     Checking icu_locale_core v2.1.1
[INFO] [stderr]     Checking chrono v0.4.43
[INFO] [stderr]     Checking bytes v1.11.1
[INFO] [stderr]     Checking bitcode v0.6.9
[INFO] [stderr]     Checking serde_urlencoded v0.7.1
[INFO] [stderr]     Checking ron v0.12.0
[INFO] [stderr]     Checking bincode v2.0.1
[INFO] [stderr]     Checking bounded-integer v0.6.1
[INFO] [stderr]     Checking humantime-serde v1.1.1
[INFO] [stderr]     Checking trybuild v1.0.115
[INFO] [stderr]     Checking icu_provider v2.1.1
[INFO] [stderr]     Checking futures v0.3.31
[INFO] [stderr]     Checking icu_properties v2.1.2
[INFO] [stderr]     Checking icu_normalizer v2.1.1
[INFO] [stderr]     Checking hitbox-core v0.2.2
[INFO] [stderr]     Checking idna_adapter v1.2.1
[INFO] [stderr]     Checking idna v1.1.0
[INFO] [stderr]     Checking url v2.5.8
[INFO] [stderr]     Checking validator v0.20.0
[INFO] [stderr]     Checking serde-saphyr v0.0.17
[INFO] [stderr]     Checking hitbox-backend v0.2.1
[INFO] [stderr]     Checking hitbox v0.2.4
[INFO] [stderr]     Checking hitbox-fn v0.2.1 (/opt/rustwide/workdir)
[INFO] [stdout] error[E0432]: unresolved import `hitbox_derive`
[INFO] [stdout]  --> tests/cached_macro.rs:7:5
[INFO] [stdout]   |
[INFO] [stdout] 7 | use hitbox_derive::{CacheableResponse, cached};
[INFO] [stdout]   |     ^^^^^^^^^^^^^ use of unresolved module or unlinked crate `hitbox_derive`
[INFO] [stdout]   |
[INFO] [stdout] help: there is a crate or module with a similar name
[INFO] [stdout]   |
[INFO] [stdout] 7 - use hitbox_derive::{CacheableResponse, cached};
[INFO] [stdout] 7 + use hitbox_core::{CacheableResponse, cached};
[INFO] [stdout]   |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0433]: cannot find module or crate `hitbox_backend` in this scope
[INFO] [stdout]    --> tests/cached_macro.rs:591:9
[INFO] [stdout]     |
[INFO] [stdout] 591 |     use hitbox_backend::format::RonFormat;
[INFO] [stdout]     |         ^^^^^^^^^^^^^^ use of unresolved module or unlinked crate `hitbox_backend`
[INFO] [stdout]     |
[INFO] [stdout]     = help: if you wanted to use a crate named `hitbox_backend`, use `cargo add hitbox_backend` to add it to your `Cargo.toml`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0432]: unresolved import `hitbox_moka`
[INFO] [stdout]  --> tests/cached_macro.rs:9:5
[INFO] [stdout]   |
[INFO] [stdout] 9 | use hitbox_moka::MokaBackend;
[INFO] [stdout]   |     ^^^^^^^^^^^ use of unresolved module or unlinked crate `hitbox_moka`
[INFO] [stdout]   |
[INFO] [stdout] help: there is a crate or module with a similar name
[INFO] [stdout]   |
[INFO] [stdout] 9 - use hitbox_moka::MokaBackend;
[INFO] [stdout] 9 + use hitbox_core::MokaBackend;
[INFO] [stdout]   |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: cannot find attribute `cacheable_response` in this scope
[INFO] [stdout]    --> tests/cached_macro.rs:379:7
[INFO] [stdout]     |
[INFO] [stdout] 379 |     #[cacheable_response(skip)]
[INFO] [stdout]     |       ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: cannot find attribute `cacheable_response` in this scope
[INFO] [stdout]    --> tests/cached_macro.rs:453:7
[INFO] [stdout]     |
[INFO] [stdout] 453 |     #[cacheable_response(skip)]
[INFO] [stdout]     |       ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0433]: cannot find module or crate `hitbox_backend` in this scope
[INFO] [stdout]    --> tests/cached_macro.rs:636:40
[INFO] [stdout]     |
[INFO] [stdout] 636 |         fn value_format(&self) -> &dyn hitbox_backend::format::Format {
[INFO] [stdout]     |                                        ^^^^^^^^^^^^^^ use of unresolved module or unlinked crate `hitbox_backend`
[INFO] [stdout]     |
[INFO] [stdout]     = help: if you wanted to use a crate named `hitbox_backend`, use `cargo add hitbox_backend` to add it to your `Cargo.toml`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0432]: unresolved import `hitbox_derive`
[INFO] [stdout]  --> tests/key_extract.rs:4:5
[INFO] [stdout]   |
[INFO] [stdout] 4 | use hitbox_derive::KeyExtract;
[INFO] [stdout]   |     ^^^^^^^^^^^^^ use of unresolved module or unlinked crate `hitbox_derive`
[INFO] [stdout]   |
[INFO] [stdout] help: there is a crate or module with a similar name
[INFO] [stdout]   |
[INFO] [stdout] 4 - use hitbox_derive::KeyExtract;
[INFO] [stdout] 4 + use hitbox_core::KeyExtract;
[INFO] [stdout]   |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: cannot find attribute `key_extract` in this scope
[INFO] [stdout]   --> tests/key_extract.rs:15:19
[INFO] [stdout]    |
[INFO] [stdout] 15 | struct TenantId(#[key_extract(name = "tenant")] String);
[INFO] [stdout]    |                   ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: cannot find attribute `key_extract` in this scope
[INFO] [stdout]   --> tests/key_extract.rs:21:7
[INFO] [stdout]    |
[INFO] [stdout] 21 |     #[key_extract(skip)]
[INFO] [stdout]    |       ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: cannot find attribute `key_extract` in this scope
[INFO] [stdout]   --> tests/key_extract.rs:28:7
[INFO] [stdout]    |
[INFO] [stdout] 28 |     #[key_extract(name = "user")]
[INFO] [stdout]    |       ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: cannot find attribute `key_extract` in this scope
[INFO] [stdout]   --> tests/key_extract.rs:30:7
[INFO] [stdout]    |
[INFO] [stdout] 30 |     #[key_extract(name = "org")]
[INFO] [stdout]    |       ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: cannot find attribute `key_extract` in this scope
[INFO] [stdout]   --> tests/key_extract.rs:36:7
[INFO] [stdout]    |
[INFO] [stdout] 36 |     #[key_extract(skip)]
[INFO] [stdout]    |       ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: cannot find attribute `key_extract` in this scope
[INFO] [stdout]    --> tests/key_extract.rs:417:7
[INFO] [stdout]     |
[INFO] [stdout] 417 |     #[key_extract(name = "method")]
[INFO] [stdout]     |       ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] Some errors have detailed explanations: E0432, E0433.
[INFO] [stdout] 
[INFO] [stdout] For more information about an error, try `rustc --explain E0432`.
[INFO] [stdout] 
[INFO] [stderr] error: could not compile `hitbox-fn` (test "cached_macro") due to 6 previous errors
[INFO] [stderr] warning: build failed, waiting for other jobs to finish...
[INFO] [stdout] error[E0599]: no method named `extract` found for struct `UserId` in the current scope
[INFO] [stdout]   --> tests/key_extract.rs:48:22
[INFO] [stdout]    |
[INFO] [stdout] 12 | struct UserId(u64);
[INFO] [stdout]    | ------------- method `extract` not found for this struct
[INFO] [stdout] ...
[INFO] [stdout] 48 |     let parts = user.extract();
[INFO] [stdout]    |                      ^^^^^^^ method not found in `UserId`
[INFO] [stdout]    |
[INFO] [stdout]    = help: items from traits can only be used if the trait is implemented and in scope
[INFO] [stdout]    = note: the following trait defines an item `extract`, perhaps you need to implement it:
[INFO] [stdout]            candidate #1: `hitbox_fn::KeyExtract`
[INFO] [stdout] help: one of the expressions' fields has a method of the same name
[INFO] [stdout]    |
[INFO] [stdout] 48 |     let parts = user.0.extract();
[INFO] [stdout]    |                      ++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0599]: no method named `extract` found for struct `TenantId` in the current scope
[INFO] [stdout]   --> tests/key_extract.rs:58:24
[INFO] [stdout]    |
[INFO] [stdout] 15 | struct TenantId(#[key_extract(name = "tenant")] String);
[INFO] [stdout]    | --------------- method `extract` not found for this struct
[INFO] [stdout] ...
[INFO] [stdout] 58 |     let parts = tenant.extract();
[INFO] [stdout]    |                        ^^^^^^^ method not found in `TenantId`
[INFO] [stdout]    |
[INFO] [stdout]    = help: items from traits can only be used if the trait is implemented and in scope
[INFO] [stdout]    = note: the following trait defines an item `extract`, perhaps you need to implement it:
[INFO] [stdout]            candidate #1: `hitbox_fn::KeyExtract`
[INFO] [stdout] help: one of the expressions' fields has a method of the same name
[INFO] [stdout]    |
[INFO] [stdout] 58 |     let parts = tenant.0.extract();
[INFO] [stdout]    |                        ++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0599]: no method named `extract` found for struct `SearchQuery` in the current scope
[INFO] [stdout]   --> tests/key_extract.rs:78:21
[INFO] [stdout]    |
[INFO] [stdout] 18 | struct SearchQuery {
[INFO] [stdout]    | ------------------ method `extract` not found for this struct
[INFO] [stdout] ...
[INFO] [stdout] 78 |     let parts1 = q1.extract();
[INFO] [stdout]    |                     ^^^^^^^ method not found in `SearchQuery`
[INFO] [stdout]    |
[INFO] [stdout]    = help: items from traits can only be used if the trait is implemented and in scope
[INFO] [stdout]    = note: the following trait defines an item `extract`, perhaps you need to implement it:
[INFO] [stdout]            candidate #1: `hitbox_fn::KeyExtract`
[INFO] [stdout] help: some of the expressions' fields have a method of the same name
[INFO] [stdout]    |
[INFO] [stdout] 78 |     let parts1 = q1.page.extract();
[INFO] [stdout]    |                     +++++
[INFO] [stdout] 78 |     let parts1 = q1.query.extract();
[INFO] [stdout]    |                     ++++++
[INFO] [stdout] 78 |     let parts1 = q1.request_id.extract();
[INFO] [stdout]    |                     +++++++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0599]: no method named `extract` found for struct `SearchQuery` in the current scope
[INFO] [stdout]   --> tests/key_extract.rs:79:21
[INFO] [stdout]    |
[INFO] [stdout] 18 | struct SearchQuery {
[INFO] [stdout]    | ------------------ method `extract` not found for this struct
[INFO] [stdout] ...
[INFO] [stdout] 79 |     let parts2 = q2.extract();
[INFO] [stdout]    |                     ^^^^^^^ method not found in `SearchQuery`
[INFO] [stdout]    |
[INFO] [stdout]    = help: items from traits can only be used if the trait is implemented and in scope
[INFO] [stdout]    = note: the following trait defines an item `extract`, perhaps you need to implement it:
[INFO] [stdout]            candidate #1: `hitbox_fn::KeyExtract`
[INFO] [stdout] help: some of the expressions' fields have a method of the same name
[INFO] [stdout]    |
[INFO] [stdout] 79 |     let parts2 = q2.page.extract();
[INFO] [stdout]    |                     +++++
[INFO] [stdout] 79 |     let parts2 = q2.query.extract();
[INFO] [stdout]    |                     ++++++
[INFO] [stdout] 79 |     let parts2 = q2.request_id.extract();
[INFO] [stdout]    |                     +++++++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0599]: no method named `extract` found for struct `CustomNamed` in the current scope
[INFO] [stdout]   --> tests/key_extract.rs:98:24
[INFO] [stdout]    |
[INFO] [stdout] 27 | struct CustomNamed {
[INFO] [stdout]    | ------------------ method `extract` not found for this struct
[INFO] [stdout] ...
[INFO] [stdout] 98 |     let parts = custom.extract();
[INFO] [stdout]    |                        ^^^^^^^ method not found in `CustomNamed`
[INFO] [stdout]    |
[INFO] [stdout]    = help: items from traits can only be used if the trait is implemented and in scope
[INFO] [stdout]    = note: the following trait defines an item `extract`, perhaps you need to implement it:
[INFO] [stdout]            candidate #1: `hitbox_fn::KeyExtract`
[INFO] [stdout] help: some of the expressions' fields have a method of the same name
[INFO] [stdout]    |
[INFO] [stdout] 98 |     let parts = custom.org_id.extract();
[INFO] [stdout]    |                        +++++++
[INFO] [stdout] 98 |     let parts = custom.user_id.extract();
[INFO] [stdout]    |                        ++++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0599]: no method named `extract` found for struct `AllSkipped` in the current scope
[INFO] [stdout]    --> tests/key_extract.rs:112:25
[INFO] [stdout]     |
[INFO] [stdout]  35 | struct AllSkipped {
[INFO] [stdout]     | ----------------- method `extract` not found for this struct
[INFO] [stdout] ...
[INFO] [stdout] 112 |     let parts = skipped.extract();
[INFO] [stdout]     |                         ^^^^^^^ method not found in `AllSkipped`
[INFO] [stdout]     |
[INFO] [stdout]     = help: items from traits can only be used if the trait is implemented and in scope
[INFO] [stdout]     = note: the following trait defines an item `extract`, perhaps you need to implement it:
[INFO] [stdout]             candidate #1: `hitbox_fn::KeyExtract`
[INFO] [stdout] help: one of the expressions' fields has a method of the same name
[INFO] [stdout]     |
[INFO] [stdout] 112 |     let parts = skipped.internal.extract();
[INFO] [stdout]     |                         +++++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0277]: the trait bound `UserId: hitbox_fn::KeyExtract` is not satisfied
[INFO] [stdout]    --> tests/key_extract.rs:129:31
[INFO] [stdout]     |
[INFO] [stdout] 129 |     let key_parts = extractor.get(args).await;
[INFO] [stdout]     |                               ^^^ unsatisfied trait bound
[INFO] [stdout]     |
[INFO] [stdout] help: the trait `hitbox_fn::KeyExtract` is not implemented for `UserId`
[INFO] [stdout]    --> tests/key_extract.rs:12:1
[INFO] [stdout]     |
[INFO] [stdout]  12 | struct UserId(u64);
[INFO] [stdout]     | ^^^^^^^^^^^^^
[INFO] [stdout]     = help: the following other types implement trait `hitbox_fn::KeyExtract`:
[INFO] [stdout]               &T
[INFO] [stdout]               &str
[INFO] [stdout]               Arg<T>
[INFO] [stdout]               Skipped<T>
[INFO] [stdout]               String
[INFO] [stdout]               bool
[INFO] [stdout]               hitbox_fn::Args<()>
[INFO] [stdout]               hitbox_fn::Args<(T0, T1)>
[INFO] [stdout]             and 24 others
[INFO] [stdout]     = note: required for `hitbox_fn::Args<(UserId,)>` to implement `hitbox_fn::KeyExtract`
[INFO] [stdout]     = note: required for `hitbox_fn::FnExtractor<hitbox_fn::Args<(UserId,)>>` to implement `Extractor`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0277]: the trait bound `UserId: hitbox_fn::KeyExtract` is not satisfied
[INFO] [stdout]    --> tests/key_extract.rs:142:31
[INFO] [stdout]     |
[INFO] [stdout] 142 |     let key_parts = extractor.get(args).await;
[INFO] [stdout]     |                               ^^^ unsatisfied trait bound
[INFO] [stdout]     |
[INFO] [stdout] help: the trait `hitbox_fn::KeyExtract` is not implemented for `UserId`
[INFO] [stdout]    --> tests/key_extract.rs:12:1
[INFO] [stdout]     |
[INFO] [stdout]  12 | struct UserId(u64);
[INFO] [stdout]     | ^^^^^^^^^^^^^
[INFO] [stdout]     = help: the following other types implement trait `hitbox_fn::KeyExtract`:
[INFO] [stdout]               &T
[INFO] [stdout]               &str
[INFO] [stdout]               Arg<T>
[INFO] [stdout]               Skipped<T>
[INFO] [stdout]               String
[INFO] [stdout]               bool
[INFO] [stdout]               hitbox_fn::Args<()>
[INFO] [stdout]               hitbox_fn::Args<(T0, T1)>
[INFO] [stdout]             and 24 others
[INFO] [stdout]     = note: required for `hitbox_fn::Args<(UserId, TenantId)>` to implement `hitbox_fn::KeyExtract`
[INFO] [stdout]     = note: required for `hitbox_fn::FnExtractor<hitbox_fn::Args<(UserId, TenantId)>>` to implement `Extractor`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0277]: the trait bound `TenantId: hitbox_fn::KeyExtract` is not satisfied
[INFO] [stdout]    --> tests/key_extract.rs:142:31
[INFO] [stdout]     |
[INFO] [stdout] 142 |     let key_parts = extractor.get(args).await;
[INFO] [stdout]     |                               ^^^ unsatisfied trait bound
[INFO] [stdout]     |
[INFO] [stdout] help: the trait `hitbox_fn::KeyExtract` is not implemented for `TenantId`
[INFO] [stdout]    --> tests/key_extract.rs:15:1
[INFO] [stdout]     |
[INFO] [stdout]  15 | struct TenantId(#[key_extract(name = "tenant")] String);
[INFO] [stdout]     | ^^^^^^^^^^^^^^^
[INFO] [stdout]     = help: the following other types implement trait `hitbox_fn::KeyExtract`:
[INFO] [stdout]               &T
[INFO] [stdout]               &str
[INFO] [stdout]               Arg<T>
[INFO] [stdout]               Skipped<T>
[INFO] [stdout]               String
[INFO] [stdout]               bool
[INFO] [stdout]               hitbox_fn::Args<()>
[INFO] [stdout]               hitbox_fn::Args<(T0, T1)>
[INFO] [stdout]             and 24 others
[INFO] [stdout]     = note: required for `hitbox_fn::Args<(UserId, TenantId)>` to implement `hitbox_fn::KeyExtract`
[INFO] [stdout]     = note: required for `hitbox_fn::FnExtractor<hitbox_fn::Args<(UserId, TenantId)>>` to implement `Extractor`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0277]: the trait bound `SearchQuery: hitbox_fn::KeyExtract` is not satisfied
[INFO] [stdout]    --> tests/key_extract.rs:166:31
[INFO] [stdout]     |
[INFO] [stdout] 166 |     let (_, key1) = extractor.get(args1).await.into_cache_key();
[INFO] [stdout]     |                               ^^^ unsatisfied trait bound
[INFO] [stdout]     |
[INFO] [stdout] help: the trait `hitbox_fn::KeyExtract` is not implemented for `SearchQuery`
[INFO] [stdout]    --> tests/key_extract.rs:18:1
[INFO] [stdout]     |
[INFO] [stdout]  18 | struct SearchQuery {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     = help: the following other types implement trait `hitbox_fn::KeyExtract`:
[INFO] [stdout]               &T
[INFO] [stdout]               &str
[INFO] [stdout]               Arg<T>
[INFO] [stdout]               Skipped<T>
[INFO] [stdout]               String
[INFO] [stdout]               bool
[INFO] [stdout]               hitbox_fn::Args<()>
[INFO] [stdout]               hitbox_fn::Args<(T0, T1)>
[INFO] [stdout]             and 24 others
[INFO] [stdout]     = note: required for `hitbox_fn::Args<(SearchQuery,)>` to implement `hitbox_fn::KeyExtract`
[INFO] [stdout]     = note: required for `hitbox_fn::FnExtractor<hitbox_fn::Args<(SearchQuery,)>>` to implement `Extractor`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0599]: the method `get` exists for struct `hitbox_fn::FnExtractor<hitbox_fn::Args<(SearchQuery,)>>`, but its trait bounds were not satisfied
[INFO] [stdout]    --> tests/key_extract.rs:167:31
[INFO] [stdout]     |
[INFO] [stdout] 167 |     let (_, key2) = extractor.get(args2).await.into_cache_key();
[INFO] [stdout]     |                               ^^^ method cannot be called due to unsatisfied trait bounds
[INFO] [stdout]     |
[INFO] [stdout]    ::: src/extractor.rs:144:1
[INFO] [stdout]     |
[INFO] [stdout] 144 | pub struct FnExtractor<T> {
[INFO] [stdout]     | ------------------------- doesn't satisfy `_: Extractor`
[INFO] [stdout]     |
[INFO] [stdout]    ::: src/args.rs:91:1
[INFO] [stdout]     |
[INFO] [stdout]  91 | pub struct Args<T>(pub T);
[INFO] [stdout]     | ------------------ doesn't satisfy `_: KeyExtract`
[INFO] [stdout]     |
[INFO] [stdout]     = note: the following trait bounds were not satisfied:
[INFO] [stdout]             `hitbox_fn::Args<(SearchQuery,)>: hitbox_fn::KeyExtract`
[INFO] [stdout]             which is required by `hitbox_fn::FnExtractor<hitbox_fn::Args<(SearchQuery,)>>: Extractor`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0277]: the trait bound `UserId: hitbox_fn::KeyExtract` is not satisfied
[INFO] [stdout]    --> tests/key_extract.rs:177:31
[INFO] [stdout]     |
[INFO] [stdout] 177 |     let (_, key1) = extractor.get(Args((UserId(1),))).await.into_cache_key();
[INFO] [stdout]     |                               ^^^ unsatisfied trait bound
[INFO] [stdout]     |
[INFO] [stdout] help: the trait `hitbox_fn::KeyExtract` is not implemented for `UserId`
[INFO] [stdout]    --> tests/key_extract.rs:12:1
[INFO] [stdout]     |
[INFO] [stdout]  12 | struct UserId(u64);
[INFO] [stdout]     | ^^^^^^^^^^^^^
[INFO] [stdout]     = help: the following other types implement trait `hitbox_fn::KeyExtract`:
[INFO] [stdout]               &T
[INFO] [stdout]               &str
[INFO] [stdout]               Arg<T>
[INFO] [stdout]               Skipped<T>
[INFO] [stdout]               String
[INFO] [stdout]               bool
[INFO] [stdout]               hitbox_fn::Args<()>
[INFO] [stdout]               hitbox_fn::Args<(T0, T1)>
[INFO] [stdout]             and 24 others
[INFO] [stdout]     = note: required for `hitbox_fn::Args<(UserId,)>` to implement `hitbox_fn::KeyExtract`
[INFO] [stdout]     = note: required for `hitbox_fn::FnExtractor<hitbox_fn::Args<(UserId,)>>` to implement `Extractor`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0599]: the method `get` exists for struct `hitbox_fn::FnExtractor<hitbox_fn::Args<(UserId,)>>`, but its trait bounds were not satisfied
[INFO] [stdout]    --> tests/key_extract.rs:178:31
[INFO] [stdout]     |
[INFO] [stdout] 178 |     let (_, key2) = extractor.get(Args((UserId(2),))).await.into_cache_key();
[INFO] [stdout]     |                               ^^^ method cannot be called on `hitbox_fn::FnExtractor<hitbox_fn::Args<(UserId,)>>` due to unsatisfied trait bounds
[INFO] [stdout]     |
[INFO] [stdout]    ::: src/extractor.rs:144:1
[INFO] [stdout]     |
[INFO] [stdout] 144 | pub struct FnExtractor<T> {
[INFO] [stdout]     | ------------------------- doesn't satisfy `_: Extractor`
[INFO] [stdout]     |
[INFO] [stdout]    ::: src/args.rs:91:1
[INFO] [stdout]     |
[INFO] [stdout]  91 | pub struct Args<T>(pub T);
[INFO] [stdout]     | ------------------ doesn't satisfy `hitbox_fn::Args<(UserId,)>: hitbox_fn::KeyExtract`
[INFO] [stdout]     |
[INFO] [stdout]     = note: the following trait bounds were not satisfied:
[INFO] [stdout]             `hitbox_fn::Args<(UserId,)>: hitbox_fn::KeyExtract`
[INFO] [stdout]             which is required by `hitbox_fn::FnExtractor<hitbox_fn::Args<(UserId,)>>: Extractor`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0599]: the method `extract` exists for reference `&UserId`, but its trait bounds were not satisfied
[INFO] [stdout]    --> tests/key_extract.rs:335:26
[INFO] [stdout]     |
[INFO] [stdout]  12 | struct UserId(u64);
[INFO] [stdout]     | ------------- doesn't satisfy `UserId: hitbox_fn::KeyExtract`
[INFO] [stdout] ...
[INFO] [stdout] 335 |     let parts = user_ref.extract();
[INFO] [stdout]     |                          ^^^^^^^ method cannot be called on `&UserId` due to unsatisfied trait bounds
[INFO] [stdout]     |
[INFO] [stdout]     = note: the following trait bounds were not satisfied:
[INFO] [stdout]             `UserId: hitbox_fn::KeyExtract`
[INFO] [stdout]             which is required by `&UserId: hitbox_fn::KeyExtract`
[INFO] [stdout] note: the trait `hitbox_fn::KeyExtract` must be implemented
[INFO] [stdout]    --> src/extractor.rs:42:1
[INFO] [stdout]     |
[INFO] [stdout]  42 | pub trait KeyExtract {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     = help: items from traits can only be used if the trait is implemented and in scope
[INFO] [stdout]     = note: the following trait defines an item `extract`, perhaps you need to implement it:
[INFO] [stdout]             candidate #1: `hitbox_fn::KeyExtract`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0599]: no method named `extract` found for struct `Request` in the current scope
[INFO] [stdout]    --> tests/key_extract.rs:380:21
[INFO] [stdout]     |
[INFO] [stdout] 361 | struct Request {
[INFO] [stdout]     | -------------- method `extract` not found for this struct
[INFO] [stdout] ...
[INFO] [stdout] 380 |     let parts = req.extract();
[INFO] [stdout]     |                     ^^^^^^^ method not found in `Request`
[INFO] [stdout]     |
[INFO] [stdout]     = help: items from traits can only be used if the trait is implemented and in scope
[INFO] [stdout]     = note: the following trait defines an item `extract`, perhaps you need to implement it:
[INFO] [stdout]             candidate #1: `hitbox_fn::KeyExtract`
[INFO] [stdout] help: some of the expressions' fields have a method of the same name
[INFO] [stdout]     |
[INFO] [stdout] 380 |     let parts = req.tenant.0.extract();
[INFO] [stdout]     |                     +++++++++
[INFO] [stdout] 380 |     let parts = req.user_id.0.extract();
[INFO] [stdout]     |                     ++++++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0599]: no method named `extract` found for struct `PaginatedRequest` in the current scope
[INFO] [stdout]    --> tests/key_extract.rs:400:21
[INFO] [stdout]     |
[INFO] [stdout] 369 | struct PaginatedRequest {
[INFO] [stdout]     | ----------------------- method `extract` not found for this struct
[INFO] [stdout] ...
[INFO] [stdout] 400 |     let parts = req.extract();
[INFO] [stdout]     |                     ^^^^^^^ method not found in `PaginatedRequest`
[INFO] [stdout]     |
[INFO] [stdout]     = help: items from traits can only be used if the trait is implemented and in scope
[INFO] [stdout]     = note: the following trait defines an item `extract`, perhaps you need to implement it:
[INFO] [stdout]             candidate #1: `hitbox_fn::KeyExtract`
[INFO] [stdout] help: some of the expressions' fields have a method of the same name
[INFO] [stdout]     |
[INFO] [stdout] 400 |     let parts = req.page.extract();
[INFO] [stdout]     |                     +++++
[INFO] [stdout] 400 |     let parts = req.req.user_id.0.extract();
[INFO] [stdout]     |                     ++++++++++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0599]: no method named `extract` found for struct `ApiCall` in the current scope
[INFO] [stdout]    --> tests/key_extract.rs:433:22
[INFO] [stdout]     |
[INFO] [stdout] 415 | struct ApiCall {
[INFO] [stdout]     | -------------- method `extract` not found for this struct
[INFO] [stdout] ...
[INFO] [stdout] 433 |     let parts = call.extract();
[INFO] [stdout]     |                      ^^^^^^^ method not found in `ApiCall`
[INFO] [stdout]     |
[INFO] [stdout]     = help: items from traits can only be used if the trait is implemented and in scope
[INFO] [stdout]     = note: the following trait defines an item `extract`, perhaps you need to implement it:
[INFO] [stdout]             candidate #1: `hitbox_fn::KeyExtract`
[INFO] [stdout] help: some of the expressions' fields have a method of the same name
[INFO] [stdout]     |
[INFO] [stdout] 433 |     let parts = call.http_method.extract();
[INFO] [stdout]     |                      ++++++++++++
[INFO] [stdout] 433 |     let parts = call.request.req.user_id.0.extract();
[INFO] [stdout]     |                      ++++++++++++++++++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] Some errors have detailed explanations: E0277, E0432, E0599.
[INFO] [stdout] 
[INFO] [stdout] For more information about an error, try `rustc --explain E0277`.
[INFO] [stdout] 
[INFO] [stderr] error: could not compile `hitbox-fn` (test "key_extract") due to 24 previous errors
[INFO] running `Command { std: "docker" "inspect" "dc3aa0b7c261fbec207db92b765402c9484935aeae916c173d23eb430fc4a1ac", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "dc3aa0b7c261fbec207db92b765402c9484935aeae916c173d23eb430fc4a1ac", kill_on_drop: false }`
[INFO] [stdout] dc3aa0b7c261fbec207db92b765402c9484935aeae916c173d23eb430fc4a1ac
